import copy

# 深拷贝可变类型
a = [1, 2, 3]
b = [11, 22, 33]
c = [a, b]

d = copy.deepcopy(c)
#
print(id(c))
print(id(d))
# 深拷贝-深层数据
a = [1, 2, 3]
b = [11, 22, 33]
c = [a, b]
#
d = copy.deepcopy(c)
#
print(id(a))
print(id(c[0]))
print(id(d[0]))


# 深拷贝不可变类型
a = (1, 2, 3)
b = (11, 22, 33)
c = (a, b)

d = copy.deepcopy(c)

print(id(c))
print(id(d))

"""
不可变类型的深拷⻉说明:
    通过上⾯的执⾏结果可以得知：
    不可变类型进⾏深拷⻉如果⼦对象没有可变类型则不会进⾏拷
    ⻉，⽽只是拷⻉了这个对象的引⽤，否则会对该对象到最后⼀个
    可变类型的每⼀层对象就⾏拷⻉, 对每⼀层拷⻉的对象都会开辟
    新的内存空间进⾏存储
可变类型的深拷⻉说明:
    通过上⾯的执⾏结果可以得知, 可变类型进⾏深拷⻉会对该对象到最
    后⼀个可变类型的每⼀层对象就⾏拷⻉, 对每⼀层拷⻉的对象都会开
    辟新的内存空间进⾏存储。
浅拷⻉和深拷⻉的区别
    浅拷⻉最多拷⻉对象的⼀层
    深拷⻉可能拷⻉对象的多层

"""